home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / earcd / docs / rview / stormc.txt < prev   
Internet Message Format  |  1997-04-06  |  22KB

  1. Path: kernighan.cs.umass.edu!barrett
  2. From: judas@cs.auc.dk (Jens Kristian Jensen)
  3. Newsgroups: comp.sys.amiga.reviews
  4. Subject: REVIEW: StormC 2.0 programming environment
  5. Followup-To: comp.sys.amiga.programmer
  6. Date: 3 Apr 1997 22:52:14 GMT
  7. Organization: The Amiga Online Review Column - ed. Daniel Barrett
  8. Lines: 531
  9. Sender: amiga-reviews@math.uh.edu (comp.sys.amiga.reviews moderator)
  10. Distribution: world
  11. Message-ID: <5i1cau$1u4@kernighan.cs.umass.edu>
  12. Reply-To: judas@cs.auc.dk (Jens Kristian Jensen)
  13. NNTP-Posting-Host: knots.cs.umass.edu
  14. Keywords: programmer, C, C++, commercial
  15. X-Review-Number: Volume 1997 Number 3
  16. Originator: barrett@knots.cs.umass.edu
  17.  
  18.  
  19. PRODUCT NAME
  20.  
  21.     StormC 2.0
  22.  
  23.  
  24. BRIEF DESCRIPTION
  25.  
  26.     Integrated developer environment (hereafter IDE) for AmigaDOS.
  27. Includes C/C++ compiler, assembler, debugger, editor (two, actually),
  28. linker, runtime-environment with resource tracking and a visual project
  29. manager/maker that integrates all the other programs.
  30.  
  31.  
  32. AUTHOR/COMPANY INFORMATION
  33.  
  34.     Name:        HAAGE & PARTNER Computer GmbH
  35.     Address:    HAAGE & PARTNER Computer GmbH
  36.             Mainzer Str. 10 A
  37.             61191 Rosbach
  38.             Germany
  39.     Telephone:    +49 - 6007 - 93 00 50
  40.     FAX:        +49 - 6007 - 75 43
  41.  
  42.     E-mail:        100654.3133@compuserve.com
  43.     Web:    http://ourworld.compuserve.com/homepages/haage_partner/
  44.  
  45.  
  46. LIST PRICE
  47.  
  48.     From the support home page:
  49.  
  50.       StormC (full version): 398 US$ (598 DM)
  51.       StormC Update 1.x -> 2.0: 115 US$ (169 DM)
  52.       StormC Upgrade (from any commercial programming language): 265 US$ 
  53.                                      (398 DM)
  54.       StormC Starter: 169 US$ (248 DM)
  55.       StormC Starter Bundle (with StormWIZARD 1.0): 198 US$ (298 DM)
  56.  
  57.     I paid 1795 DKr for an upgrade from SAS/C.
  58.  
  59.  
  60. DEMO VERSION
  61.  
  62.     Yes! Available on the support home page. The demo will only
  63. compile 10kB of code and link 20kB, but otherwise it is fully
  64. functional.  The demo does not come with AmigaOS includes (because
  65. they're copyrighted), but you can get the full demo with includes from
  66. Haage & Partner for 30 DM or 20 US$.
  67.  
  68.  
  69. SPECIAL HARDWARE AND SOFTWARE REQUIREMENTS
  70.  
  71.     From the StormC 2.0 demo .guide file
  72.  
  73.       - Amiga with MC68020 CPU and a hard disk
  74.       - Kickstart and Workbench 3.0 (v39)
  75.       - 6 MB RAM
  76.       - 10 MB hard disk space
  77.  
  78.       With this computer system you can start programming with StormC,
  79.       but the project size is limited. Furthermore not all debugger
  80.       features can be used. For this you need at least a 68030 CPU
  81.       with MMU and more RAM.
  82.  
  83.       A really good configuration for StormC is the following:
  84.       - Amiga with 68030 including MMU
  85.       - Kickstart and Workbench 3.1
  86.       - 18 MB RAM
  87.       - 60 MB hard disk space
  88.  
  89.     In my opinion this is overkill. I managed to get the demo of
  90. version 1.1 running on an A500+ with OS 2.0 and a total of
  91. 3.5MB Ram, and I could even compile HelloWorld! I don't know
  92. if they have changed the requirements for V2.0 but I guess
  93. they have a reason for stating so high requirements
  94. themselves.
  95.  
  96.  
  97. COPY PROTECTION
  98.  
  99.     None, installs on HD.
  100.  
  101.  
  102. MACHINE USED FOR TESTING
  103.  
  104.     A4000, 40Mb Fast RAM, 2 Mb chip Ram
  105.     CyberStorm Mk. II 040/40MHz
  106.     HD: Maxtor 7546 520MB
  107.         Seagate 520MB
  108.     Kickstart 39.29, DOpus 5.5 as workbench replacement.
  109.     Ariadne Ethernet card
  110.     C= 1960 monitor.
  111.  
  112.  
  113. INSTALLATION
  114.  
  115.     Installation procedure uses the standard Installer program.
  116.     Installation went smoothly.
  117.  
  118.  
  119. PROJECT MANAGING
  120.  
  121.     A central part of StormC is the toolbar and the project
  122. windows. The toolbar consists of nine icons: Text(new/open/save),
  123. Project(new/open/save), make, run and debug. When creating a new
  124. project (or opening an existing), a project window opens.
  125.  
  126.     The project window contains the various files the project
  127. consists of (source codes, link libraries, executables etc.). All
  128. these files are ordered after filetype and you can fold a section of
  129. equal filetypes.  The project windows also has a column for the size
  130. of the files (both as sourcefiles and as compiled .o files if it
  131. applies). It is also possible to include projects into projects to form
  132. huge projects of smaller ones.
  133.  
  134.     If you have multiple project windows open, the build/run/debug
  135. icons in the toolbar refers to the last active project window.  For
  136. each project window, there's also an extensive setting section which
  137. allows you to configure the behaviour of the compiler/linker, runtime-
  138. environment and the like for each project.  If a file in the project
  139. window is double clicked, the appropriate editor for the particular
  140. filetype is brought up if appropriate.  You can of course also add
  141. (multiple) files, delete files/sections of file types and move files
  142. up and down in the hierarchy.
  143.  
  144.  
  145. EDITOR(S)
  146.  
  147.     StormC comes with two editors: StormEd, a nice, little editor
  148. not being complicated or requiring many resources and GoldEd 4 PRO, a
  149. shareware editor with almost every feature you can think of (and some,
  150. I bet, you haven't thought of!) GoldEd comes as full install archive
  151. with a keyfile registered to Haage & Partner. If you like, you can
  152. also send in the registration card and receive your personal GoldEd
  153. keyfile.
  154.  
  155.     I used StormEd in the demo of version 1.1, but I have used
  156. GoldEd all the time I have owned StormC 2.0 so I don't know if
  157. anything has changed in StormEd since V1.1.
  158.  
  159. STORMED
  160.  
  161.     (From my knowledge with V1.1)
  162.  
  163.     StormEd is a brilliant little editor which hasn't got many
  164. configuration options or features, but still does exactly what you
  165. want (at least it does what I want). It features everything you can
  166. expect from a small editor, plus:
  167.  
  168.     -Syntax highlighting (colored text)
  169.     -Smart indentation (context sensitive indentation)
  170.     -Can be used as source-level debugger display (and to set breakpoints)
  171.     -References. Context sensitive help with programming functions.
  172.  
  173. GOLDED
  174.  
  175.     GoldEd is a standalone product far too complex to be covered
  176. in this review. I will, however, point out a few
  177. features/peculiarities of GoldEd.
  178.  
  179.     GoldEd does NOT work like regular Amiga editors like
  180. CygnusEd/Edge and the likes in its standard configuration. It is,
  181. however, possible to configure GoldEd so it matches what I like,
  182. except for the following:
  183.  
  184.     -The block handling cannot be exactly like Cygnus ed (the way I
  185.      prefer)
  186.     -Real TABs are not possible. GoldEd always expands TABs to spaces. This
  187.      cannot be configured until Dietmar Eilert (the author of GoldEd)
  188.      changes this, which he stubbornly seems to refuse (I cannot imagine
  189.      that I am the only user who prefers it this way!)
  190.  
  191.     That said, GoldEd is full of configuration possibilities, and
  192. if you care to set up GoldEd yourself, you can have something that
  193. closely matches the way you see a perfect editor. For instance you can
  194. define what should happen when the user presses any key, or picks a
  195. menu item (the menu is of course also fully configurable). If you can
  196. live with the way the author seems to prefer an editor, you do not
  197. have to configure anything as there are several modes available for
  198. different filetypes (GoldEd is filetype sensitive) such as html,
  199. C/C++, LaTeX, plain text (with spell checking), .h files, assembler,
  200. e-mail and the like. GoldEd can do everything StormEd can (except for
  201. real TABs).
  202.  
  203.     Furthermore it has:
  204.  
  205.     -Folding. Can fold functions/blocks of text.
  206.     -Automatic Phrase Completion. Finishes/spell checks phrases based on
  207.      dictionary or context sensitive.
  208.     -ToolBar. Nice icons for loading/compiling etc.
  209.     -Quickfunc. Can scan/show list of functions in current source for easy
  210.      overview and for finding/jumping to particular code.
  211.     -API. Smart add on programs such as automatic showing matching
  212.      brackets, showing return type/parameters for a function when
  213.      placing the cursor over it, etc.
  214.     -Macros. Both AREXX macros and simple recording/playing of sequences.
  215.     -Templates. Automatically knowing what you mean when typing switch(
  216.      for example.
  217.  
  218.     And a dozen of other features that you will like when you see
  219. it.  GoldEd is integrated nicely with StormC. It is started from
  220. StormC if you doubleclick a source file in a project window (and have
  221. chosen to use GoldEd as editor) and it can even be used as
  222. source-level debugger.
  223.  
  224.  
  225. COMPILER
  226.  
  227.     When you have written your nice C/C++ program that the world
  228. can't be without, you usually want to compile it. With StormC's IDE
  229. this is done by pressing the make button (or the run or debug button
  230. if that's what you want to do after compiling). The make button calls
  231. first the C/C++ compiler and then the linker with the options for the
  232. current project. During compiling/linking, a window showing possible
  233. warnings/errors is present. If any errors occur, they become visible
  234. in a list view and you can doubleclick on the error to get to the line
  235. containing the error in the source. If the project was successfully
  236. compiled/linked, gadgets appear to allow you to run or debug the
  237. program.
  238.  
  239.     The compiler is a so called optimizing compiler, which (among
  240. many other things) means that it can generate smaller/faster code by
  241. using the processors registers instead of using the stack. The code
  242. generated by StormC is REALLY nice and optimized (you can watch it by
  243. telling the compiler to also generate assembler or by disassembling
  244. the generated code). The compiler can generate code optimized for
  245. 68000-68060 and a version for PowerPC processors is also on its way
  246. according to Haage & Partner.
  247.  
  248.  
  249. LINKER
  250.  
  251.     I haven't tested the linker's abilities that extensively, but
  252. so far it has linked anything (well, at least anything correct) that I
  253. have thrown at it. The linker includes all the standard options such
  254. as which startup code to link with and which memory to relocate
  255. to. Furthermore it includes some options I have never seen before like
  256. Optimizing (Fold common code, optimize for near code) and linking as
  257. ROM code. I could imagine the latter could be comfortable if you were
  258. generating absolute code for an embedded system or in fact any place
  259. where absolute code is needed.
  260.  
  261.     It should be mentioned, that both the compiler and the linker
  262. can be run like regular compilers from a shell if you for some reason
  263. don't want to use the IDE.
  264.  
  265.  
  266. ASSEMBLER
  267.  
  268.     If StormC stumbles upon any assembler sources while compiling
  269. a project, it calls an external assembler. StormC uses the freeware
  270. version of the assembler PhxAss, FreePhxAss. This free version does
  271. not support includes, macros and some other things, but otherwise it
  272. does its job.  As of version 4.32, PhxAss has become freeware so you
  273. can fetch PhxAss yourself (from Aminet in dev/asm/PhxAss435.lha) and
  274. use the full version, which supports just about everything.
  275.  
  276.  
  277. RUNTIME-ENVIRONMENT
  278.  
  279.     When running a program from within the IDE, the program is
  280. 'embedded' to allow resource tracking and catching of exceptions. As
  281. long as the program is running, there is a window called StormShell
  282. present. From the StormShell window you can send signals to the
  283. program (CTRL-C, D, E and F), pause, kill and change the priority of
  284. the program. If you kill the program or it terminates itself, the
  285. StormShell informs you about resources that haven't been freed
  286. properly and it can free them for you if you wish. If the project has
  287. been compiled with the debug option on, you can also enter the
  288. debugger at any time while running the program.
  289.  
  290.  
  291. DEBUGGER
  292.  
  293.     StormC features a modern source-level debugger. Source-level
  294. means that when you debug a file, you can single-step trough each line
  295. of the source. In StormC, the progress in the source is shown in the
  296. editor while debugging. This means that when you start to debug, a bar
  297. appears over the first line of the source. When you press the
  298. "Singlestep" button, the line below the bar is executed and the bar is
  299. moved to the next line. If the next line is in another source code
  300. file, the source is loaded and displayed (if you chose to step into
  301. the function and not just have it executed silently).
  302.  
  303.     Besides the current line bar, the editor also gets a list of
  304. checkboxes at the left of the display - one checkbox for each
  305. executable line.  These checkboxes are used to set breakpoints in the
  306. source. Instead of having to single-step trough each line to get to a
  307. certain source line, you can the add a breakpoint at the particular
  308. line by pressing the "Go to next breakpoint" button. There is also a
  309. "Go until function is left" button, which finishes the current
  310. function. The debug buttons appears in the StormShell
  311. window. Naturally you can also do the things you usually can from
  312. within the runtime-environment such as send control codes to the
  313. program, kill it, etc.
  314.  
  315.     All these functions are very common for debuggers today. What
  316. really makes StormC shine above everything else I have seen on the
  317. Amiga, is the Variable window. In this window, you can get a list of
  318. current variables (the variables that are within the scope of the
  319. current function) and global variables. For each variable you can see
  320. its value and its location (also if it is currently in a CPU register)
  321. but almost more important - you can see its type. Since the debugger
  322. knows the type of each variable (of course it does. It is a friend of
  323. the compiler which compiled the source) it can browse through the
  324. structure hierarchy (and classes if you use the C++mode). An example:
  325. You have a global variable called MyIntuiMsg, defined as "struct
  326. IntuiMessage *MyIntuiMsg". When you debug the source, you can see the
  327. variable in the list of global variables. It has the value 0x08751588
  328. and is currently in register A1. "Hmm I wonder how the IntuiMessage
  329. structure that MyIntuiMsg points at looks like" you think, doubleclick
  330. at the variables name and voila! The variable window changes to show
  331. you the IntuiMessage structure. You can see that it consists of, among
  332. other things, a Message structure called ExecMessage. You want to
  333. inspect what the Message structure looks like, so you doubleclick the
  334. ExecMessage. A Message consists of a Node, a pointer to a MsgPort and
  335. UWORD called Length. You are curious again so you click the Node to
  336. see its contents. When you have seen enough, you can press the "Pop
  337. inspection stack" button to get a level up in the hierarchy or get to
  338. the root by selecting global/local variables. Get the picture?
  339.  
  340.     Apart from the StormShell and the Variable windows which
  341. automatically pops up when debugging, you can also get a the following
  342. windows:
  343.  
  344.     Modules -     Shows which .o files the executable consists of. You can
  345.               get an overview of functions for each module and see the
  346.               source.
  347.     History -     Shows the history of the debugging session (Which lines
  348.               have been run in which source and so forth.)
  349.     Breakpoints - A list of breakpoints in all sources. It is possible to
  350.               disable certain breakpoints and remove all breakpoints.
  351.     Stack -          See which parameters/functions are on the stack. You can
  352.               see source and variables for each and set breakpoints at
  353.               the end of functions.
  354.     Hex editor -  Simple Hex memory viewer/editor.
  355.     Debugger -    Shows the program as 68000 assembler. You can also have
  356.               other memory locations disassembled. It is also possible
  357.               to debug at at assembly level and set breakpoints for
  358.                   each instruction.
  359.  
  360.  
  361. PROFILER
  362.  
  363.     The last window (phew!) is a new function in version 2.0 - a
  364. built in profiler. With a profiler you are able to see how much time
  365. each function takes, how many times each function is called and so
  366. on. This makes you tune your programs because you can see where it is
  367. necessary to optimize. The profiler in StormC lets you see the
  368. percent time a certain functions has taken, the total, minimum and
  369. maximum time of the calls and the number of calls. The profile report
  370. can also be saved as ASCII. Very nice to have such a simple yet
  371. powerful tool built into the IDE!
  372.  
  373.  
  374. DOCUMENTATION
  375.  
  376.     The program comes with a single 200 pages written English
  377. manual describing the various parts. It does a pretty good job
  378. explaining everything including compiler options etc. but they could
  379. really need some proof-reading (They're Germans, remember ;-).
  380.  
  381.     Unfortunately the manual I received with the 2.0 version of
  382. the software was for version 1.1. Therefore most of the new functions
  383. were described in a .readme and a .guide file.
  384.  
  385.     I couldn't find information about the following and therefore
  386. had to figure it out myself:
  387.  
  388.     Documentation of ARexx commands.
  389.     Information on how to link assembler with C.
  390.  
  391.     Haage&Partner promises that the manual will be updated with
  392. the next update of StormC!
  393.  
  394.  
  395. LIKES
  396.  
  397.     -The ease of having an IDE
  398.     -GoldEd included instead of trying to making a perfect editor
  399.      themselves
  400.      (but StormEd included in case you don't like GoldEd).
  401.     -The debugger/variable watcher system and its great integration with
  402.      both editors.
  403.     -Built-in profiler.
  404.     -Quality of the generated code (speed/size).
  405.  
  406.  
  407. DISLIKES AND SUGGESTIONS
  408.  
  409.     Dislikes:
  410.     -The price - although it is cheaper than an equivalent developer
  411.      environment for other platforms.
  412.     -Having to run a commodity just to start on its own screen.
  413.  
  414.     Suggestions:
  415.     - Integration with a GUI builder program (and in my opinion it should
  416.       not be StormWizard - why introduce yet another standard? Why not
  417.       settle for MUI/MUIBuilder or ClassAct?).
  418.     - Snapshot of windows for each project, and not just globally!
  419.     - Debugging of tasks/libraries.
  420.     - A register watch window would be nice when debugging at assembler
  421.       level.
  422.     - Improvement of the manual.
  423.     - And a bunch of suggestions for GoldEd, but the StormC people are not
  424.       to blame directly here so I'll skip it.
  425.     - Faster e-mail response.
  426.  
  427.  
  428. COMPARISON TO OTHER SIMILAR PRODUCTS
  429.  
  430.     The only other development system on the Amiga that could
  431. probably match StormC is MaxonC, but as I have no experience with
  432. MaxonC (they don't even have a demo available) I cannot compare the
  433. two. I used to use SAS/C and IMHO StormC is far better (perhaps except
  434. for the compiler itself in plain C mode)
  435.  
  436.     If StormC was integrated with MUIBuilder or the like, we'd
  437. have something that started to look like Delphi or Visual(Something)
  438. for Windows.
  439.  
  440.  
  441. BUGS
  442.  
  443.     I have found a few bugs and have reported them to Haage & Partner:
  444.  
  445.     - When dragging a drawer into the project managing window (the one
  446.       containing the icons) the StormC GUI doesn't respond to input
  447.       anymore and the CPU goes at 100%
  448.     - The supplied fd2pragma say "No FROM file given" - no matter what
  449.       parameters I pass to it. I have be promised to receive a bugfixed
  450.       version soon.
  451.     - When double-clicking on a file from the project management window,
  452.       GoldEd opens in StormC mode with C syntax parsing etc. no matter
  453.       what type of file it is. (This is not actually a bug, but at least
  454.       it should not work that way).
  455.     - Sometimes the disassembler output text looks a bit garbled at the
  456.       end of the line. This depends very much on which font you use.
  457.     - I found a bug in the compiler when using the 1.1 demo
  458.       (something with overloading the '+' operator for a fraction
  459.       class in C++) and reported it to Haage&Partner. It has still
  460.       not been corrected (or at least I get the same error) with
  461.       my version 2.00.08 of the StormC compiler. Guess I'd better
  462.       tell them again!?
  463.  
  464.     Furthermore I have read about some people on
  465. comp.sys.amiga.programmer who claim to have found bugs in the StormC
  466. compiler. I will not say that you have to worry about StormC
  467. generating faulty code, but obviously there are a few bugs to be
  468. fixed. Haage & Partner makes patches available on their home page.
  469.  
  470.  
  471. VENDOR SUPPORT
  472.  
  473.     I have contacted Haage & Partner quite a few times by e-mail
  474. and I must say that their response time varies very much from time to
  475. time. Usually they respond within a week, but most times it takes just
  476. a day or two. One time I experienced a three week reply time where I
  477. reposted my message three times, but I hope that was a mistake (At
  478. least they apologized politely)!.
  479.  
  480.  
  481. WARRANTY
  482.  
  483.     From the StormC 2.0 demo .guide file
  484.  
  485.       (1) The HAAGE & PARTNER COMPUTER GmbH guarantees, that up to
  486. the point in time of delivery the data carriers are physically free of
  487. material and manufacturing defects and the product can be used as
  488. described in the documentation.
  489.  
  490.       (2) Defects of the delivered product are removed by the
  491. supplier within a warranty period of six months from delivery. This
  492. happens through free replacement or in the form of an update, at the
  493. discretion of the supplier.
  494.  
  495.       (3) The HAAGE & PARTNER COMPUTER GmbH does not guarantee
  496. that the product is suitable for the task anticipated by the customer.
  497. The HAAGE & PARTNER COMPUTER GmbH does not take any responsibility for
  498. any damage that may be caused.
  499.  
  500.       (4) The user is aware that under the present state of
  501. technology it is not possible to manufacture faultless software.
  502.  
  503.  
  504. CONCLUSIONS
  505.  
  506.     The product is really a state of the art developer
  507. environment. Although it is not perfect it implements many developer
  508. features never seen on the Amiga before. My ratings look like this
  509. (five stars being the best possible):
  510.  
  511.     Environment:    ****
  512.     Compiler:    ****
  513.     GoldEd:        ****
  514.     Manual:        ***
  515.     Support:    **
  516.     General rating: ****
  517.  
  518.     The manual is not that important to me, but the support could
  519. be better!  If you need a professional developing environment for the
  520. Amiga, this product should be the first for you to investigate. Even
  521. if you are a hobbyist programmer and don't want to pay that much, I
  522. urge you to try the demo to see just how much money can buy :-) My
  523. hobbyist programming has certainly become easier and more productive
  524. since I got StormC.
  525.  
  526.  
  527. COPYRIGHT NOTICE
  528.  
  529.     I hereby grant permission to post this document on the USENET
  530. newsgroup comp.sys.amiga.reviews, storage at the reviews ftp site and
  531. Aminet, and distribution to the Amiga Web Directory at CUCUG.  Haage &
  532. Partner may also include or quote the review on their home page without
  533. taking quotes out of their context.  Commercial magazines may quote or
  534. include the review providing that the send me the issue in which the
  535. quote occurs (contact me at the e-mail address below). Otherwise this
  536. document remains copyrighted by the author.
  537.  
  538.     Copyright 1997 Jens Kristian Jensen.
  539.     Comments are welcome at judas@cs.auc.dk
  540.  
  541. ---
  542.  
  543.    Accepted and posted by Daniel Barrett, comp.sys.amiga.reviews moderator
  544.    Send reviews to:    amiga-reviews-submissions@math.uh.edu
  545.    Request information:    amiga-reviews-requests@math.uh.edu
  546.    Moderator mail:    amiga-reviews@math.uh.edu
  547.    Anonymous ftp site:  math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews
  548.    Web site: ftp://math.uh.edu/pub/Amiga/comp.sys.amiga.reviews/index.html
  549.